package com.casic.ops.runner.ssh;

import com.casic.ops.entity.domain.MachineInfoDO;
import com.jcraft.jsch.JSchException;

/**
 * @ClassName ops
 * @Description ssh 工厂 ,这里主要使用的是这个,做个封装
 * @Author mianbin
 * @Date 2022/6/22 15:40
 * @Version 1.0
 **/
public class SshClientFactory {

    /**
     * 基于用户名密码认证创建客户端
     * @param username 用户名
     * @param password 密码
     * @param host 主机ip
     * @param port ssh端口号
     * @return
     */
    public static SshClient createSsh(String username, String password, String host, int port) throws Exception {
        try {
            return new SshCommand(username, password, host, port);
        } catch (JSchException e) {
            throw new Exception("创建ssh客户端出错", e);
        }
    }
    /**
     *
     * 用户名密码或私钥连接客户端
     * @param properties 配置参数
     * 主要包含 用户名 密码 私钥 主机ip 端口 认证类型
     *
     * */
    public static SshClient createSsh(MachineInfoDO properties) throws Exception {
        try {
            return new SshCommand(properties);
        } catch (JSchException e) {
            throw new Exception("创建ssh客户端出错", e);
        }
    }
}
